# TODO 整数和浮点数变量的声明以及使用
# 在Python中，整数和浮点数是两种最常用的数字类型。整数表示为没有小数部分的数字，而浮点数表示为具有小数部分的数字。Python支持基本的算术运算（如加、减、乘、除）和比较运算符（如等于、大于、小于等）。
# 整数：整数没有小数部分，可以是正的，负的，或者是0。
x = 10
y = -3
z = 0
# 常见的整数操作包括加(+), 减(-), 乘(*), 除(/), 取余(%), 幂运算(**), 整除(//).
print(x + y)  # 输出：7
print(x - y)  # 输出：13
print(x * y)  # 输出：-30
print(x / y)  # 输出：-3.3333333333333335
print(x % y)  # 输出：-2
print(x ** y)  # 输出：0.001
print(x // y)  # 输出：-4
# 需要注意的是，整数除法（/）在 Python 中会返回一个浮点数，即使结果是一个整数。如果你想得到整数结果，可以使用整除运算符（//）。

# 关于幂运算的定义: 幂运算，由两个星号 ** 表示，是一种数学运算，在 Python 中它被用来表示一个数的指数。 基本格式为 a ** b，其含义是 "a 的 b 次方"。
# 以下是一些例子：
print(2 ** 3)  # 输出：8，因为 2 的 3 次方等于 8
print(10 ** 2)  # 输出：100，因为 10 的 2 次方等于 100
print(2 ** -1)  # 输出：0.5，因为 2 的 -1 次方等于 0.5
print(9 ** 0.5)  # 输出：3.0，因为 9 的 0.5 次方等于根号9，也就是 3.0
# 注意：在 Python 中 ** 是右结合的，也就是说，2 ** 2 ** 3 等价于 2 ** (2 ** 3)，结果是 256，而不是 (2 ** 2) ** 3，其结果是 64。
print(2 ** 2 ** 3)  # 256

# 浮点数：浮点数是有小数部分的数字，也可以是正的，负的，或者是0。
a = 10.0
b = -3.5
c = 0.0
print(a + b)  # 输出：6.5
print(a - b)  # 输出：13.5
print(a * b)  # 输出：-35.0
print(a / b)  # 输出：-2.857142857142857
print(a % b)  # 输出：-0.5
print(a ** b)  # 输出：0.00031622776601683794
print(a // b)  # 输出：-3.0
# 注意，浮点数运算可能会有舍入误差。这是由于计算机内部表示浮点数的方式导致的，是所有编程语言的常见问题。
print(0.1 + 0.2)  # 输出：0.30000000000000004，而不是0.3

# 这句代码的含义是从 decimal 模块中导入 Decimal 类。这样，你就可以在你的代码中直接使用 Decimal 类了。
from decimal import Decimal

# 如果你需要对浮点数进行精确的比较或运算，你可能需要使用 decimal 模块，它提供了更精确的浮点数运算。
# decimal 模块在 Python 中提供了一种 Decimal 数据类型用于浮点数的精确运算。在需要进行金融和货币运算，或者需要保留高精度的情况下，使用 Decimal 类型会比使用 Python 内建的 float 类型更为合适。
# 创建 Decimal 对象
# 构造函数的参数是字符串，而不是浮点数
a = Decimal('0.1')
b = Decimal('0.2')
# 用 Decimal 对象做数学运算
c = a + b
print(c)  # 输出：0.3
# 比较 Decimal 对象
print(a + b == Decimal('0.3'))  # 输出：True

# 查看当前变量的类型,可以调用 type() 方法
print(type(c))  # <class 'decimal.Decimal'>
